package com.cobrapi.movy.controller;

import java.util.Collection;

import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.cobrapi.movy.model.Filme;
import com.cobrapi.movy.repository.FilmeRepository;


@Resource
public class FilmeController {
	private FilmeRepository filmeDao;
	private final Result result;
	
	public FilmeController(Result result, FilmeRepository filmeDao){
		this.result = result;
		this.filmeDao = filmeDao;
	}
	
	@Get("/filme/{filme.id}/editar")
	public void editar(Filme filme) {
	  filme = filmeDao.loadById(filme.getId());

	  result.include("filme", filme).forwardTo(this).novo();
	}
	
	@Get("/filme/{filme.id}")
	public void exibir(Filme filme) {
		filme = filmeDao.loadById(filme.getId());

		result.include("filme", filme);
	}	
	
	@Get("/filme")
	public void listagem(){
		Collection<Filme> filmeList = filmeDao.loadAll();
		result.include("filmeList", filmeList);
	}
	
	@Get("/filme/novo")
	public void novo() {

	}
	
	@Delete("/filme/{filme.id}")
	public void remover(Filme filme){
		filmeDao.remove(filme);
		
		result
		.include("message","Filme removido com sucesso")
		.redirectTo(this).listagem();
	}	

	@Post("/filme")
	public void salvar(Filme filme){
		filme = filmeDao.save(filme);
		
		result
		.include("message", "Filme salvo com sucesso!")
		.redirectTo(this).exibir(filme);
	}

}
